# demo02_redis.py
# 导入redis模块
import redis
# 创建连接对象
r = redis.Redis(host='192.168.88.100', port=6379, db=0)
# 1.存储字符串
# r.set('name', 'tom')
# 获取字符串
# s = r.get('name') # 字节串b'lucy'
# 字节串转为字符串
# print(s, str(s, encoding='utf-8'))
# 如果不存在，才会存储成功；存在不会再去存储
# r.setnx('gender', 'male')
# print(r.get('gender'))
# 设置有效期
# r.setex(键, 有效期, 值)
# r.setex('title', 20, 'python')

# 2.哈希表
# 键值对形式
# 存储
# r.hset(名称, 键, 值)
# r.hset('person', 'name', 'Tom')
# r.hset('person', 'age', 18)
# r.hset('person', 'gender', 'boy')
# 获取
# r.hget(名称, 键)
# print(r.hget('person', 'name'))
# print(r.hget('person', 'age'), r.hget('person', 'gender'))
# 获取所有
# r.hgetall(名称)
# {b'name': b'Tom', b'age': b'18', b'gender': b'boy'}
# dict01 = r.hgetall('person')
# 练习：转换为字符串
# {'name': 'Tom', 'age': '18', 'gender': 'boy'}
def get_dict(dict01):
    dict02 = {}
    # 遍历传递进来的字典，将键值都转换为字符串
    for key, value in dict01.items():
        key = str(key, encoding='utf-8')
        value = str(value, encoding='utf-8')
        # 放到新字典
        dict02[key] = value
    return dict02
# print(get_dict(dict01))


book = {'title': 'Python', 'price': 49.9, 'pub_time': '2024-10-01'}
# 以字典方式存储为哈希表(不推荐)
# r.hmset('book', book)
# for key, value in book.items():
#     r.hset('book', key, value)
# 删除
# r.hdel('book', 'pub_time', 'price')
# print(r.hgetall('book'))
# 获取部分
# print(r.hmget('book', 'title', 'price'))
# 获取所有的键
# print(r.hkeys('book'))
# 获取所有的值
# print(r.hvals('book'))
# 判断某一项是否存在
# print(r.hexists('book', 'title'))
# 设置过期时间
r.expire('book', 20)



# 关闭连接
r.close()